技術問答
技術文章
iT 徵才
Tag
聊天室
2025 鐵人賽
登入/註冊
問答
文章
Tag
邦友
鐵人賽
搜尋
2023 iThome 鐵人賽
DAY
5
1
AI & Data
從 Airflow 走到 dbt 的 30 天
系列 第
5
篇
Day 5: How dbt models actually works?
15th鐵人賽
chorsengs
團隊
dbt 和 dbt 以外有趣的事
2023-09-20 23:28:13
876 瀏覽
分享至
分析 dbt model 的核心價值
承接上文,從上圖可以發現:dbt 的本質:
架構模組化:透過大量的 view (stage、intermediate),來將 transform 階段做階層化的整理;
成本最小化:最後一個階段才將表格的內容實體化(materialized as table)
透過視覺化的整理,analytic engineers 自然可以清楚察資料在其中變化的脈絡,並在調整 / 新增 pipeline 的過程中更加得心應手。
各個階段詳細說明
讓我們進一步展開昨天的幾個階段,來詳細說明運作的過程,以及背後的機制。
source(view):
定義:資料來源,完全不做運算處理,只做 .yml 的設定處理建立 view,讓 stage 階段能順利吃到資料。
機制:在稍後我們建立 test 的時候,將 source 與 stage 階段區分開來是重要的 —— 究竟是對方傳輸資料過來的時候,就不符合規範?還是 stage 進行的 data pre-processing 時發生了錯誤 —— 換句話說,只要這兩件事對 Data Engineers 而言,需要被區分成不同的階段來進行對策思考,那麼為了降低認知負荷,我們就有將這兩階段做差異區分的價值。
stage(view):
定義:資料來源,通常會做基礎的 1 對 1 運算處理
機制:在 staging 階段,我們可以清晰的看到外部的資料是如何進入 lakehouse 的;以均一為例,我們的資料大致來自 GA4 Analytics / Backend batching / Static Data / Gov Data 這四種 source,因此也會在 stage 的階段,對不同的資料進行處理。例如,從後端傳入的資料,可能需要做許多 null 值、異常大的值等等,將後端特殊化的處理還原的手法;爬蟲政府官網的資料,也需要做一定的字元清理。
intermediate(view):
定義:做複雜的 join / aggregation / analytic functions
機制:在 intermediate 階段,我們通常會用 plain English 來作為資料的名稱,例如:int_class_id_decoded_from_studentlist_keys / int_class_info_joined_by_class_id,其實跟我們之前在談 CTE 的 naming conventions 規則如出一轍——如何讓人一目了然,就如何處理。在這個階段,我們則會進一步進行複雜的運算。以 decode 為例,我們將 BigQuery 中的 safety-code-64 透過 sql 還原成 datastore-id(背後是用了 macro 的機制,之後介紹),這樣才有辦法後續用這個 id 來執行 join table 的大表事前處理。
留言
追蹤
檢舉
上一篇
Day 4: LEGO, a metaphor of views managed by dbt
下一篇
Day 6: How dbt models actually works? (2/2)
系列文
從 Airflow 走到 dbt 的 30 天
共
9
篇
目錄
RSS系列文
訂閱系列文
8
人訂閱
5
Day 5: How dbt models actually works?
6
Day 6: How dbt models actually works? (2/2)
7
Day 7: Very Unique MODEL, Semantic Layer
8
Day 8: Very Unique MODEL, Semantic Layer (2/n)
9
Day 9: 一些碎碎念的插播
完整目錄
熱門推薦
{{ item.subject }}
{{ item.channelVendor }}
|
{{ item.webinarstarted }}
|
{{ formatDate(item.duration) }}
直播中
立即報名
尚未有邦友留言
立即登入留言
iThome鐵人賽
參賽組數
902
組
團體組數
37
組
累計文章數
10118
篇
完賽人數
98
人
看影片追技術
看更多
{{ item.subject }}
{{ item.channelVendor }}
|
{{ formatDate(item.duration) }}
直播中
熱門tag
看更多
15th鐵人賽
16th鐵人賽
13th鐵人賽
14th鐵人賽
12th鐵人賽
11th鐵人賽
鐵人賽
17th鐵人賽
2019鐵人賽
javascript
2018鐵人賽
python
2017鐵人賽
windows
php
c#
windows server
linux
css
react
熱門問題
Esxi 8.0版本上的虛擬機器, 安裝的作業系統是Windows Server 2025, 確定輸入的密碼是正確的, 無法登入(顯示密碼錯誤)
【求助】顯卡/主板 支援 PCIe4.0 為何 Host to Device (H2D) 只剩 Gen1 速度 (0.5 GB/s) ?
請問今天鐵人賽的發文系統是否故障?
Windows GPO Bitlocker
HP iLo Advanced trial license
在線求大神,千奧軟體主機怎麼安裝
Docker Compose 建立 GitLab 容器,執行器 Runner 運行流水線問題
windows server無法使用gpedit.msc
Java證照題目(main() method)
因為網路磁碟的關係造成系統自動重新開機
熱門回答
Esxi 8.0版本上的虛擬機器, 安裝的作業系統是Windows Server 2025, 確定輸入的密碼是正確的, 無法登入(顯示密碼錯誤)
Windows GPO Bitlocker
【求助】顯卡/主板 支援 PCIe4.0 為何 Host to Device (H2D) 只剩 Gen1 速度 (0.5 GB/s) ?
windows server無法使用gpedit.msc
因為網路磁碟的關係造成系統自動重新開機
熱門文章
[為你自己學 Gemini CLI ... 的原始碼] 第 2 天,主程式裡的 Hello Kitty!
第30天,完賽心得 / 葉家藥燉排骨 在地排隊美食(新北板橋)| 30天滷肉飯
[為你自己學 n8n] 第 3 天,打開控制台,認識你的自動化駕駛艙!
第4天,數位憑證的產生 / 中崙張記藥膳排骨 排骨讚(台北松山)| 30天滷肉飯
第4天,Cloudflare Public DNS 與 WARP / 滷小小 美味的滷味 | 30天板橋湳雅夜市
IT邦幫忙
×
標記使用者
輸入對方的帳號或暱稱
Loading
找不到結果。
標記
{{ result.label }}
{{ result.account }}